'''
Linux用户管理类
• 基类：实现往linux系统里添加用户

• 子类A：
• 能够查看、修改uid和gid、shell等信息

• 子类B：
• 1.能删除用户
• 2.能删除组

• 子类C(A,B)：
• 1.可以单独新建组
• 2.可以将某个用户的gid修改为新建的组的gid
• 3.加入异常机制，异常的名字需要自己定义
'''
import os

class uadd():
    def add(self,addname):
        if not os.system(f"id {addname} >>/dev/null"):
            print(f"{addname}已存在")
        else:
            os.system(f"useradd {addname} >>/dev/null")
            print(f"已成功为您创建{addname}用户")

class umod(uadd):
    def look(self,modname):
        ss='{print $3,$4,$7}'
        lk=os.popen(f"cat /etc/passwd|awk -F: '$1 ~ /{modname}/ {ss}'").read()
        print(f"{modname}用户的的uid，gid及shell分别为：{lk}")

    def muid(self,modname,uuid):
        os.popen(f"usermod -u $modname $uuid")
        ss='{print $3}'
        new=os.popen(f"cat /etc/passwd|awk -F: '$1 ~ /{modname}/ {ss}'").read()
        print(f"{modname}所需修改的uid为{uuid},现在passwd文档里为{new}")

    def mgid(self,modname,ugid):
        os.popen(f"usermod -g $modname $ugid")
        ss='{print $4}'
        new = os.popen(f"cat /etc/passwd|awk -F: '$1 ~ /{modname}/ {ss}'").read()
        print(f"{modname}所需修改的uid为{ugid},现在passwd文档里为{new}")

    def mshell(self,modname,ushell):
        os.popen(f"usermod -s $modname $ushell")
        ss='{print $7}'
        new = os.popen(f"cat /etc/passwd|awk -F: '$1 ~ /{modname}/ {ss}'").read()
        print(f"{modname}所需修改的uid为{ushell},现在passwd文档里为{new}")

class udel(uadd):
    def udel(self,udelname):
        os.popen(f"userdel -r {udelname}")

    def gdel(self,gdelname):
        os.popen(f"groupdel {gdelname}")

class change(umod,udel):
    def gnew(self,gidname,ucname):
        try:
            os.system(f"groupadd  {gidname}")
            print(f"已为您新建名为{gidname}的组")
            os.system(f"usermod -G {gidname} {ucname}")
            print(f"已将{ucname}的附属组加入{gidname}")
            os.system(f"su {ucname}")
            os.popen(f"newgrp {gidname}")
            print(f"已将{ucname}的所属组变成{gidname}")
        except Exception:
            print("操作失败")

